package ar.com.algotres.tpdos.views.observadores;

import static java.lang.Double.parseDouble;
import ar.com.algotres.tpdos.model.aviones.Avion;
import ar.com.algotres.tpdos.model.controlador.ITorreDeControl;
import ar.com.algotres.tpdos.model.fisica.Posicion;
import ar.com.algotres.tpdos.model.fisica.Trayectoria;
import ar.uba.fi.algo3.titiritero.MouseClickObservador;

public class ObservadorDeClicks implements MouseClickObservador {

	private ITorreDeControl torreDeControl;
	private Avion avionSeleccionado = null;

	public ObservadorDeClicks(ITorreDeControl torreDeControl) {
		this.torreDeControl = torreDeControl;
	}

	@Override
	public void MouseClick(int arg0, int arg1) {
		// conversion de int a Double
		Double x = parseDouble(String.valueOf(arg0));
		Double y = parseDouble(String.valueOf(arg1));
		Posicion ptoClickeado = new Posicion(x, y);
		
		//TODO: xfavor refactorizame!!
		for(Avion avion : torreDeControl.getAviones()) {
			if(esClickSobreAvion(avion, ptoClickeado)) {
				avionSeleccionado = avion;
				for (Avion unAvion : torreDeControl.getAviones()){
					if (unAvion.seleccionado()){
						unAvion.deseleccionar();
					}
				}
				avionSeleccionado.seleccionar();
				return;
			}
		}
		
		if (avionSeleccionado != null){
			Trayectoria nuevaTrayectoria = new Trayectoria(avionSeleccionado.getFinalDeRuta(), ptoClickeado);
			avionSeleccionado.agregarTrayectoria(nuevaTrayectoria);
		}
	}
	
	private Boolean esClickSobreAvion(Avion avion, Posicion ptoClickeado) {
		return avion.getRepresentacionFisica().esPuntoInterno(ptoClickeado);
	}

}
